package com.cskaoyan.javase.oop3._2inner._2static._0introduction;

/**
 * 静态内部类的定义语法相当于把成员内部类的定义加一个关键字static
 * 定义语法：
 * //外围（普通）类
 * [访问权限修饰符] class EnclosedClazz{
 *   [访问权限修饰符] static class NestedClazz{
 *  }
 * }
 *
 * 静态内部类的自身特点
 * 依然主要从以下几个角度分析：
 *      1.访问权限修饰符
 *          静态内部类和成员内部类一样，有四种访问权限级别
 *
 *      2.成员特点
 *          静态内部类和外围类本身就是两个独立的类
 *          之所以静态内部类进入另一个的成员位置定义,是为了借助外围类隐藏和保护自己
 *          所以
 *          静态内部类的成员特点和普通类完全一致,没有任何区别
 *
 *      3.继承和实现
 *      可以继承,可以实现
 *      如果继承内部类,只能继承静态内部类,不能继承成员内部类
 *
 * @since 17:22
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
}

// 外围类
class EnclosedClazz {
    class A{}
    static class B{}
    // 静态内部类
    static class NestedClazz extends B{
        int a;
        private int b;
        static int c;
        static final int D = 20;
        static {}
        static void testStatic(){}
        void test(){}

        public NestedClazz() {
        }
        {}
    }
}